function getXmlHttp(){
    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

function vote(vote) {
    //var data = document.getElementById('carma').value;

    // создать объект для запроса к серверу
    var req = getXmlHttp()
    
    // span рядом с кнопкой
    // в нем будем отображать ход выполнения
    var statusElem = document.getElementById('vote_status')
    var id =getUrlVars()["id"]; // вытаскиваем параметр id из урла

    req.onreadystatechange = function() {
        // onreadystatechange активируется при получении ответа сервера

        if (req.readyState == 4) {
            // если запрос закончил выполняться

            if(req.status == 200) {
                statusElem.innerHTML = req.responseText // если всё ок, то выдаем текст из воте.пхп
            } else {
//                alert('Не удалось получить данные: ' + req.statusText)
            }
        }

    }
    
    // объект запроса подготовлен: указан адрес и создана функция onreadystatechange
    // для обработки ответа сервера

    if (1 == vote || 2== vote){
        data = 'vote=' + vote + '&id=' + id

        req.open('POST', 'index.php?controller=karma&action=vote', true)
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') // заголовок в посте это обязательный атрибут
        req.send(data)  // отослать запрос

        statusElem.innerHTML = 'Идет учет вашего голоса...'
        
    } else {
            alert ("Ошибка, проголосуйте ещё раз!")        
    }       
}

function update() {

    var req = getXmlHttp()
    var statusElem = document.getElementById('vote_status')
    var id =getUrlVars()["id"];

    req.onreadystatechange = function() {

        if (req.readyState == 4) {

            if(req.status == 200) {
                statusElem.innerHTML = req.responseText // если всё ок, то выдаем текст из воте.пхп
            } else {
                alert('Не удалось получить данные: ' + req.statusText)
            }
        }
    }
    data = 'id=' + id
    req.open('POST', 'index.php?controller=karma&action=update', true)
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
    req.send(data)
}

function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
}